describe("A Suite", function () {
  it ("contains spec with an expectation", function () {
    expect(true).toBe(true);
  });

  it("and has a negative case", function () {
    expect(false).not.toBe(true);
  });

  it("toEquals", function () {
    var foo = {
      a: 12,
      b: 34
    };

    var bar = {
      a: 12,
      b: 34
    };

    expect(foo).toEqual(bar);
  });


  it("The 'toMatch' matcher is for regular expression.", function () {
    var message = "foo bar baz";

    expect(message).toMatch(/bar/);
    expect(message).toMatch("foo");
    expect(message).not.toMatch(/quux/);
  });

  it("The 'toBeDefined' matcher compares against 'undefined'", function () {
    var a = {
      foo: 'foo'
    };

    expect(a.foo).toBeDefined();
    expect(a.bar).not.toBeDefined();
  });

  it("The 'toBeNull' matcher compares against null", function () {
    var a = null;
    var foo = 'foo';

    expect(null).toBeNull();

    expect(a).toBeNull();
    expect(foo).not.toBeNull();
  });

  it("The 'toBeTruthy' matcher is for boolean casting testing", function () {
    var a, foo = 'foo';

    expect(foo).toBeTruthy();
    expect(a).not.toBeTruthy();
  });

  it("the 'toBeFalsy' matcher is for boolean casting testing", function () {
    var a, foo = 'foo';
    expect(a).toBeFalsy();

    expect(foo).not.toBeFalsy();
  });

  it("The 'toContain' matcher is for finding an item in an Array", function () {
    var a = ["foo", "bar", "baz"];

    expect(a).toContain("bar");
    expect(a).not.toContain("quuz");
  });


  it("The 'toBeLessThan' matcher is for matchematical comparessions", function () {
    var pi = 3.1415926, e = 2.78;

    expect(e).toBeLessThan(pi);
    expect(pi).not.toBeLessThan(e);
  });

  it("The 'toBeGreaterThan' matcher is for mathematical comparisons", function () {
    var pi = 3.1415926, e = 2.78;
    expect(pi).toBeGreaterThan(e);
    expect(e).not.toBeGreaterThan(pi);
  });

  
});